Micron Document
Livres et Wikis | Archives | Info


Trait (programmation)
layout: Wide Β· Narrow Β· Centered
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
Un trait est une sous-classe abstraite, un modèle conceptuel pour structurer des programmes orientés objets.

C'est un ensemble de mΓ©thodes concrΓ¨tes ou fonctions, pouvant Γͺtre ajoutΓ© Γ  une classe pour Γ©tendre ses fonctionnalitΓ©s.

Quand un langage de programmation supporte les traits, il permet la rΓ©solution explicite des conflits qui apparaissent quand une classe utilise deux traits qui ont des mΓ©thodes qui portent le mΓͺme nom (contrairement aux mixinscite-ref-1[1]).

Les traits ne sont pas des types abstraits car ils ne capturent pas l'essence de l'objet mais celle de ses propriΓ©tΓ©s et mΓ©thodescite-ref-2[2]cite-ref-3[3].

Contents

β€’ Exemple
β€’ Voir aussi

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

ImplΓ©mentations

β€’ Les traits proviennent du langage Self en 1982[Γ  vΓ©rifier]cite-ref-4[4].
β€’ Java inclut cette fonctionnalitΓ© depuis sa version 8 sortie en mars 2014 introduisant la fonctionnalitΓ© des mΓ©thodes par dΓ©faut.
β€’ Scala inclut cette fonctionnalitΓ©cite-ref-5[5].
β€’ PHP les propose depuis sa version 5.4cite-ref-6[6].
‒ Rust propose cette fonctionnalité et l'utilise dans l'implémentation de sa bibliothèque standardcite-ref-7[7].
β€’ C++: les propose dans la STL et Boost
β€’ Les traits sont proposΓ©s pour inclusion dans Smalltalk.
β€’ Les traits sont proposΓ©s pour inclusion dans Fortran 202Ycite-ref-8[8], qui succΓ©dera Γ  la norme Fortran 202X attendue en 2023.

Par ailleurs, les Β« mixins de module Β» de Ruby sont comparables aux traits dans une certaine mesure. De mΓͺme, le rΓ΄le en Perl 6 est une fonctionnalitΓ© inspirΓ©e du concept de trait.

Exemple

L'exemple d'utilisation suivant en PHP montre une meilleure granularitΓ© des traits en comparaison d'un hΓ©ritage multiple :

trait Hello {
public function sayHello() {
echo 'Hello ';
}
}
trait World {
public function sayWorld() {
echo ' World';
}
}
class MyHelloWorld {
use Hello, World;
public function sayExclamationMark() {
echo '!';
}
}
$o = new MyHelloWorld();
$o->sayHello();
$o->sayWorld();
$o->sayExclamationMark();

Notes et rΓ©fΓ©rences

cite-note-11. ↑ guerraoui2003rachid-guerraoui2003(en) Rachid Guerraoui, ECOOP '99 : Object-Oriented Programming : 13th European Conference Lisbon, Portugal, June 14-18, 1999 Proceedings, Springer, 31 juillet 2003 (lire en ligne)
cite-note-22. ↑ s-stone1986harold-s-stone1986(en) Harold S. Stone, 1986 proceedings, IEEE Computer Society Press, coll. Β« Association for Computing Machinery, IEEE Computer Society Β», 1986 (lire en ligne)
cite-note-33. ↑ gutmann2007peter-gutmann2007(en) Peter Gutmann, Cryptographic Security Architecture : Design and Verification, Springer Science & Business Media, 8 mai 2007 (lire en ligne)
cite-note-44. ↑ 1982(en) G. Curry, L. Baer, D. Lipkie, and B. Lee, Traits : An approach to multiple-inheritance subclassing. In SIGOA conference on Office Information Systems, pages 1–9, Philadelphia, Pennsylvania, USA, ACM Press, 1982
cite-note-55. ↑ (en) Β« Traits Β» : Β« traits are used to define object types by specifying the signature of the supported methods. Β»
cite-note-66. ↑ (en) Β« Traits Β» : Β« As of PHP 5.4.0, PHP implements a method of code reuse called Traits. Β»
cite-note-77. ↑ (en) Β« Traits Β» : Β« A trait is a language feature that tells the Rust compiler about functionality a type must provide. Β»
cite-note-88. ↑ (en) Β« fortran_proposals/20-109.txt at master Β· j3-fortran/fortran_proposals Β», sur GitHub (consultΓ© le 18 septembre 2021)

Voir aussi

Articles connexes
Liens externes

β€’ (en) Traits - Composable Units of Behavior sur Software Composition Group (universitΓ© de Berne)
β€’ (en) Proposition d'implΓ©mentation en PHP

β€’ Portail de la programmation informatique